#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef int ElemType; 
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
LinkList List_HeadInsert(LinkList &L){//使用头插法
    ElemType s;
    LNode *p;
    L=(LinkList)malloc(sizeof(LNode));//创建头指针
    L->next=NULL;
    scanf("%d",&s);
    while(s!=-1){
        p=(LNode*)malloc(sizeof(LNode));
        p->data=s;
        p->next=L->next;
        L->next=p;
        scanf("%d",&s);
    }
    return L;
}
LinkList List_TailInsert(LinkList &L){//尾插法
    ElemType t;
    LNode *p,*s;
    L=(LinkList)malloc(sizeof(LNode));
    s=L;
    scanf("%d",&t);
    while (t!=-1)
    {
        p=(LNode*)malloc(sizeof(LNode));
        p->data=t;
        s->next=p;
        s=p;
        scanf("%d",&t);
    }
    s->next=NULL;
   return L;
}
int PrintLink(LinkList L){//打印
    if (L->next==NULL){
        printf("链表为空");
        return 0;
    }
    L=L->next;
    while(L!=NULL){
        printf("%d ",L->data);
        L=L->next;
    }
    return 1;
    }
LNode *GetElem(LinkList L,ElemType e){
    LNode *p=L->next;
    while (p!=NULL&&p->data!=e)
    p=p->next;
    return p;  
}
int main(){
    LinkList L;
    LNode *p;
    L=List_TailInsert(L);
    PrintLink(L);
    p=GetElem(L,4);
    if (p!=NULL){
        printf("%d",p->data);
    }
    
    return 0;
}